////////////////////////////////////////////////////////////////////////
// Last svn revision: $Id:  $ 
////////////////////////////////////////////////////////////////////////
/// \class drow::MLC::AMatrixOp
///
/// \brief The interface for a library of matrix operations
///
/// \author Douglas Richardson         <douglas.richardson@swyrich.com>
///
/// REVISION HISTORY:\n
/// 	22/03/12 : Douglas Richardson - New File \n
///
/// \details The interface for a library of matrix operations
///
////////////////////////////////////////////////////////////////////////

#ifndef __drow_MLC_AMatrixOp__
#define __drow_MLC_AMatrixOp__

#include "MLC/Matrix.hh"

namespace drow {
namespace MLC {

class AMatrixOp {

public:
    virtual Matrix Add(const Matrix &m1, const Matrix &m2) = 0;
    virtual Matrix Subtract(const Matrix &m1, const Matrix &m2) = 0;
    virtual Matrix Multiply(const Matrix &m1, const Matrix &m2) = 0;
    virtual Matrix Dot(const Matrix &m1, const Matrix &m2) = 0;
    virtual Matrix Cross(const Matrix &m1, const Matrix &m2) = 0;
    virtual Matrix Norm(const Matrix &m1, const int normSize) = 0;
    virtual Matrix Transpose(const Matrix &m1) = 0;
};
}
}

#endif